A computer network is a collection of interconnected computing devices that can exchange data and share resources. Example network devices include layer two devices that operate within the second layer of the Open Systems Interconnection (OSI) reference model, i.e., the data link layer, and layer three devices that operate within the third layer of the OSI reference model, i.e., the network layer. Network devices within computer networks often include a routing engine that provides control plane functionality for the network device. In some cases, the network devices may also include a plurality of packet forwarding engines and a switch fabric that collectively provide a forwarding plane for forwarding network traffic.
The routing engine provides control plane functions storing network topology in the form of routing tables, executing routing protocols to communicate with peer routing devices and maintain and update the routing tables, and providing a management interface to allow user access and configuration of the network device. The routing engine maintains routing information that describes a topology of a network, and derives a forwarding information structure, e.g., a forwarding information base (FIB), in accordance with the routing information. In general, the routing information represents the overall topology of the network and defines routes to destinations/prefixes within the network.
In contrast, the forwarding information is generated based on selection of certain routes within the network and maps packet key information (e.g., destination information and other select information from a packet header) to one or more specific next hops and ultimately to one or more specific output interfaces of interface cards of the network device. Typically, the routing engine installs forwarding structures into each of the PFEs to control forwarding of traffic within the data plane. This allows the FIB in each of PFEs to be updated without degrading packet forwarding performance of routing node. In some instances, the routing engine may drive separate FIBs which are copied to respective PFEs.
Different types of underlying PFE hardware architectures (e.g., chipset platforms) may have different built-in capabilities and may require installed forwarding information to meet certain requirements or conform to certain formats in order for the PFEs to forward network traffic in an optimal manner. Currently, applications running on the routing engine have to create forwarding structures to be installed in the FIB based on the particular requirements of the underlying forwarding plane technology. These forwarding structures are pushed down to the forwarding plane. This requires the routing engine to be aware of the requirements of the different PFEs and tailor the forwarding structures to the limitations of each PFE. This can result in scalability problems as networks grow.